Methods and systems for automated searching

ABSTRACT

The present invention provides systems and methods for automating a search over a network such as the Internet. A user selects data such as text from within an application. The selected data is activated and a search is performed without the user having to leave the application. The search is performed while the user is continuing within the application. When the search is complete, the search results are made available to the user within the application from which the search was initiated. In one embodiment, the data is pre-searched and the results are cached such that the results are already available should the user desire. The present invention is particularly suited to integration with an operating system such that the methods of the present invention are thereby available to all applications. Alternatively, the present invention can be specific to a particular application.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.14/178,117, filed Feb. 11, 2014, and entitled “METHODS AND SYSTEMS FORAUTOMATED SEARCHING”, which is a continuation of U.S. patent applicationSer. No. 13/327,690, filed Dec. 15, 2011, which issued Apr. 15, 2014 asU.S. Pat. No. 8,700,595, which is a continuation of U.S. patentapplication Ser. No. 12/862,607, filed Aug. 24, 2010, which issued Jan.17, 2012 as U.S. Pat. No. 8,099,436 and entitled “METHODS AND SYSTEMSFOR AUTOMATED SEARCHING”, which is a continuation of U.S. patentapplication Ser. No. 11/925,646, filed Oct. 26, 2007, which issued Sep.14, 2010 as U.S. Pat. No. 7,797,301, and entitled “METHODS AND SYSTEMSFOR AUTOMATED SEARCHING”, which is a continuation of U.S. patentapplication Ser. No. 09/875,444, filed Jun. 6, 2001, which issued Dec.11, 2007 as U.S. Pat. No. 7,308,439, entitled “METHODS AND SYSTEMS FORUSER ACTIVATED AUTOMATED SEARCHING”. The present application claimspriority to the foregoing applications, which are incorporated herein byreference in their entireties.

BACKGROUND OF THE INVENTION

1. The Field of the Invention

The present invention relates to computer related searches and dynamiclinks. More specifically, the present invention relates to performinguser defined searches and to creating user defined links from existingtext.

2. Prior State of the Art

The primary problem addressed by this invention relates to how searchesare currently performed on the Internet, an Intranet or other computernetwork. For example, when a user desires to perform a search whileworking within an application such as a word processor, the user mustfirst exit the word processor and initiate a Internet browser. Once theInternet browser is opened, the user first opens a particular searchengine or other database. Next, the user inputs the search terms intothe selected search engine. The search engine then returns the searchresults to the user. Finally, the user must extract the informationreturned in the search result and input that information into thecurrent application.

This can become a tedious and very unproductive process as the userspends time going between an application and a browser in order toperform various searches. In addition, the user often must perform theadditional step of accessing the particular web site which may bereturned in the search results. This additional step extends the processof searching the Internet for information or other data. What is neededare systems and methods for simplifying this process by allowing a userto search the Internet or other network from within an application morequickly and more easily.

SUMMARY

The present invention provides systems and methods for automating asearch over a network such as the Internet. A user selects data such astext from within an application. The selected data is activated and asearch is performed without the user having to leave the application.The search is performed while the user is continuing within theapplication. When the search is complete, the search results are madeavailable to the user within the application from which the search wasinitiated. In one embodiment, the data is pre-searched and the resultsare cached such that the results are already available should the userdesire. The present invention is particularly suited to integration withan operating system such that the methods of the present invention arethereby available to all applications. Alternatively, the presentinvention can be specific to a particular application.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the manner in which the above-recited and other advantagesand features of the invention are obtained, a more particulardescription of the invention briefly described above will be rendered byreference to specific embodiments thereof which are illustrated in theappended drawings. Understanding that these drawings depict only typicalembodiments of the invention and are not therefore to be consideredlimiting of its scope, the invention will be described and explainedwith additional specificity and detail through the use of theaccompanying drawings in which:

FIG. 1 illustrates an example system that provides an exemplaryoperating environment for the present invention; and

FIG. 2 is an exemplary flowchart illustrating a preferred method of theinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

One embodiment of the present invention relates to allowing a user toperform searches on the Internet without having to leave the particularapplication within which the user is operating. A preferred method is toallow the user to dynamically create a hyperlink or a link within theapplication. Once this link is created, the present invention providesfor selecting search terms, executing the search request and returningthe results to the user without the user having to leave the context ofthe application. For example, if the user is operating within a wordprocessing program and desires to perform a search relating to some ofthe words within the document that is being created, the first step thatthe user must perform is to select the words or the text that correspondto the search terms. The creation of the link, in one embodiment, is aninherent part of the selection of text. In other embodiments, no link iscreated and the search terms are simply executed. The selection of thistext can be done by methods currently known in the art such ashighlighting the text with the mouse or keyboard commands.

Once the text has been selected, the user activates the selected text,which is an example of causing the search to be initiated. Frequentlythis can be done using a drop down menu, a right click of a mouse, akeyboard command, or a voice command or other method. A search is thenperformed based on the terms that have been selected. In one embodiment,after the text has been selected and activated, the search is performedin the background and the user may continue to operate within theapplication. Once the search has been performed, the search results arereturned to the user. In some instances, those results can be inputdirectly into the word processing application or other application, orthe user has the option of previewing the results or viewing theresults. The user can also store the results to a hard drive or otherstorage medium for later review. The present invention also has theability to take into account the context of the document that is beingcreated by the user. For example, the present invention may examine thesentence that contains the selected word to focus the search terms thathave been selected.

While the present invention has been described herein with regards toword processing applications, the presentation may also be used in othersituations. The present invention may be used to search documents thatare saved or files that are saved in other locations. For instance, auser may designate one or more files that are stored on a networkstorage medium to serve as the search parameters. Alternatively, a usermay initiate a search on a computer network for all files that containparticular words and then cause the present invention to search theInternet for information relating to those terms that have beenidentified by a user. The present invention may be used with textrecognition applications, database applications, spreadsheetapplications, and the like.

The user may designate which search engine or Internet site is to beused for the search. Alternatively, a user may designate that the searchbe performed on more than one search engine or that a metasearch enginebe used. In other words, the present invention is highly configurable bythe user. The user can specify which terms are to be searched. The useris also able to specify how the search is to be performed, whether it bea context based search or strictly limited to the terms or words thathave been selected by the user. The user is able to indicate how thesearch is to be performed and where the search is to be performed. Theuser is also able to indicate how many results are to be returned. Moresimply, the user is able to configure, in a variety of ways, how thepresent invention is to be utilized. User preferences may be pre-set,but the present invention has the ability to learn a user's preferences.

The present invention also has a look-ahead feature. This look-aheadfeature allows the present invention to search for terms that exist in adocument, for example, and perform a search before the user actuallyindicates that a search is to be performed on those terms. For instance,when a brief is written, various cases are cited. When the presentinvention is able to detect a case citation, the search is automaticallyperformed and the search results of that case citation may be providedthrough use of the present invention. This feature is particularlyuseful in a variety of situations including but not limited to:attorney's writing legal documents; doctors writing medical histories;accountants performing numerical analysis; journalists writing articles;and academicians researching projects.

The present invention is not limited, however, to searching for text.The present invention is capable of searching for image files, soundfiles, MPEG files, or other type of files that may exist and containinformation that is accessible over the Internet or other networks. Inone embodiment, these types of searches are performed using the metadatathat accompanies these types of files. For example, graphic filestypically have metadata that describes what the image is and these termsare able to be searched.

The present invention extends to both methods and systems for automatingInternet searches. The embodiments of the present invention may comprisea special purpose or general purpose computer including various computerhardware, as discussed in greater detail below.

Embodiments within the scope of the present invention also includecomputer-readable media for carrying or having computer-executableinstructions or data structures stored thereon. Such computer-readablemedia can be any available media which can be accessed by a generalpurpose or special purpose computer. By way of example, and notlimitation, such computer-readable media can comprise RAM, ROM, EEPROM,CD-ROM or other optical disk storage, magnetic disk storage or othermagnetic storage devices, or any other medium which can be used to carryor store desired program code means in the form of computer-executableinstructions or data structures and which can be accessed by a generalpurpose or special purpose computer. When information is transferred orprovided over a network or another communications connection (eitherhardwired, wireless, or a combination of hardwired or wireless) to acomputer, the computer properly views the connection as acomputer-readable medium. Thus, any such a connection is properly termeda computer-readable medium. Combinations of the above should also beincluded within the scope of computer-readable media.Computer-executable instructions comprise, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose processing device to perform a certain function orgroup of functions.

FIG. 1 and the following discussion are intended to provide a brief,general description of a suitable computing environment in which theinvention may be implemented. Although not required, the invention willbe described in the general context of computer-executable instructions,such as program modules, being executed by computers in networkenvironments. Generally, program modules include routines, programs,objects, components, data structures, etc. that perform particular tasksor implement particular abstract data types. Computer-executableinstructions, associated data structures, and program modules representexamples of the program code means for executing steps of the methodsdisclosed herein. The particular sequence of such executableinstructions or associated data structures represent examples ofcorresponding acts for implementing the functions described in suchsteps.

Those skilled in the art will appreciate that the invention may bepracticed in network computing environments with many types of computersystem configurations, including personal computers, hand-held devices,multi-processor systems, microprocessor-based or programmable consumerelectronics, network PCs, minicomputers, mainframe computers, and thelike. The invention may also be practiced in distributed computingenvironments where tasks are performed by local and remote processingdevices that are linked (either by hardwired links, wireless links, orby a combination of hardwired or wireless links) through acommunications network. In a distributed computing environment, programmodules may be located in both local and remote memory storage devices.

With reference to FIG. 1, an exemplary system for implementing theinvention includes a general purpose computing device in the form of aconventional computer 20, including a processing unit 21, a systemmemory 22, and a system bus 23 that couples various system componentsincluding the system memory 22 to the processing unit 21. The system bus23 may be any of several types of bus structures including a memory busor memory controller, a peripheral bus, and a local bus using any of avariety of bus architectures. The system memory includes read onlymemory (ROM) 24 and random access memory (RAM) 25. A basic input/outputsystem (BIOS) 26, containing the basic routines that help transferinformation between elements within the computer 20, such as duringstart-up, may be stored in ROM 24.

The computer 20 may also include a magnetic hard disk drive 27 forreading from and writing to a magnetic hard disk 39, a magnetic diskdrive 28 for reading from or writing to a removable magnetic disk 29,and an optical disk drive 30 for reading from or writing to removableoptical disk 31 such as a CD-ROM or other optical media. The magnetichard disk drive 27, magnetic disk drive 28, and optical disk drive 30are connected to the system bus 23 by a hard disk drive interface 32, amagnetic disk drive-interface 33, and an optical drive interface 34,respectively. The drives and their associated computer-readable mediaprovide nonvolatile storage of computer-executable instructions, datastructures, program modules and other data for the computer 20. Althoughthe exemplary environment described herein employs a magnetic hard disk39, a removable magnetic disk 29 and a removable optical disk 31, othertypes of computer readable media for storing data can be used, includingmagnetic cassettes, flash memory cards, digital video disks, Bernoullicartridges, RAMs, ROMs, and the like.

Program code means comprising one or more program modules may be storedon the hard disk 39, magnetic disk 29, optical disk 31, ROM 24 or RAM25, including an operating system 35, one or more application programs36, other program modules 37, and program data 38. A user may entercommands and information into the computer 20 through keyboard 40,pointing device 42, or other input devices (not shown), such as amicrophone, joy stick, game pad, satellite dish, scanner, or the like.These and other input devices are often connected to the processing unit21 through a serial port interface 46 coupled to system bus 23.Alternatively, the input devices may be connected by other interfaces,such as a parallel port, a game port or a universal serial bus (USB). Amonitor 47 or another display device is also connected to system bus 23via an interface, such as video adapter 48. In addition to the monitor,personal computers typically include other peripheral output devices(not shown), such as speakers and printers.

The computer 20 may operate in a networked environment using logicalconnections to one or more remote computers, such as remote computers 49a and 49 b. Remote computers 49 a and 49 b may each be another personalcomputer, a server, a router, a network PC, a peer device or othercommon network node, and typically include many or all of the elementsdescribed above relative to the computer 20, although only memorystorage devices 50 a and 50 b and their associated application programs36 a and 36 b have been illustrated in FIG. 1. The logical connectionsdepicted in FIG. 1 include a local area network (LAN) 51 and a wide areanetwork (WAN) 52 that are presented here by way of example and notlimitation. Such networking environments are commonplace in office-wideor enterprise-wide computer networks, intranets and the Internet.

When used in a LAN networking environment, the computer 20 is connectedto the local network 51 through a network interface or adapter 53. Whenused in a WAN networking environment, the computer 20 may include amodem 54, a wireless link, or other means for establishingcommunications over the wide area network 52, such as the Internet. Themodem 54, which may be internal or external, is connected to the systembus 23 via the serial port interface 46. In a networked environment,program modules depicted relative to the computer 20, or portionsthereof, may be stored in the remote memory storage device. It will beappreciated that the network connections shown are exemplary and othermeans of establishing communications over wide area network 52 may beused.

Referring to FIG. 2, which is an exemplary flowchart of a preferredembodiment of the present invention. In step 100 the user selects textwhich may be present in a document being created in a word processor.The methods and manners in which text may be selected include using amouse or other device to select text. Text selection may be automatic,programmed or learned. The present invention is not limited to texthowever, but images or other data types may also be selected asdescribed above. In step 102, the text or data is activated. Activatingtext or data refers to providing a drop down menu to a user to selectthe search engine or causing the computer to initiate the search withouthaving the user select a search engine. Activating text or data alsorefers to creating or providing a link that may be activated or clickedon by the user. In one embodiment, the selection of text in step 100 andthe activation of text in step 102 comprise creating a link in a userapplication or user document. In one embodiment, the created linkcontains the search terms selected by a user. When the link is clickedor activated, a search is performed using the terms in the link. Thesurrounding text or data may be used as context to focus the search inanother embodiment.

In another embodiment of the present invention, it is understood that itis possible to perform the search based on the link that has beencreated and store the results for future access by a user. This enablesthe user to have instant access to the search results without having toperform the search again at a later date. The results of the search maybe simply stored on the users local storage medium such as a local harddrive or RAM. In step 104, after the text has been selected andactivated, the search is typically performed as indicated by theconfiguration settings or by the user. The search may be performed on anInternet search engine or over the Internet or through various othertypes of databases or networks, including but not limited to, intranetsand extranets.

In step 106, the results of the search are returned to the user and canbe displayed in a variety of manners. In other words, a user or theapplication is capable of manipulating the results. Manipulating thesearch results includes, but is not limited to, copying at least aportion of the search results, pasting at least a portion of the searchresults, deleting at least a portion the search results, saving at leasta portion of the results, using the search results in accordance withpre-defined rules or procedures, and the like. For example, the resultsof the search may be displayed when the user mouses over the text thatwas previously selected. When that mouse crosses over the activated textthe results can be displayed in a pop up window to a user and the userthen has the ability to select which of the search results the userdesires to place in the document or to read. In another embodiment, thepresent invention may simply place the first result of the search intothe document without further user input. For example, if the searchresult is a court case citation, then the citation may be placed withinthe text. The user then has the ability to edit this result as if itwere text that the user had created. These methods are intended to beexemplary descriptions of how search results can be returned to a userand used in a document or other application. Additionally, more than oneportion of the text or other data may be activated. Also, linked andunlinked text and data displayed by a browser are included withinpreferred embodiments of the present invention.

Essentially, hyperlinks or links are being created where hyperlinks orlinks do not already exist. Links are dynamically created based on thedata that is selected as well as the context of the selected data. Forexample, the search engine that is used to perform the search for aselected word (sentence, paragraph, image) may be determined based onthe context of the word. If the word “aspirin” is selected in a sentence(page, etc.) that also has the word “interaction” in it, a medical druginteraction database may be searched instead of a generic search engine.

Basically, a user indicates what text is to be used in a search. Thismay be done in a number of ways depending on the application beingexecuted by the user. In many instances, both the operating system and aparticular application are involved in the selection of text or otherdata. Depending on the application, for example, a user may highlightthe text (with mouse, keyboard, or some other way); hover the cursorover the text; and wherever the cursor is in some document (like whiledoing word processing).

Once the text to search for is indicated in some fashion, the user willtrigger the search or activate the text. Again, this can happen inseveral ways, such as click the mouse (right, left, middle, etc.); keysequence (F12, etc.); menu item; main application menu; context menu(which usually comes up when the user right clicks in an application);toolbar button; voice command, dedicated keyboard or mouse button, andthe like.

When the search action is initiated, the search may occur immediatelybased on the selected text and bring up the results in a web browser, orit may bring up a user interface to prompt the user for more informationto fine tune the search actions being performed. For example, the usermay: highlight a word; right click to bring up the context menu; orselect the menu item. Once this action is performed, a dialog window isdisplayed asking the user if they want to search based on the word, thesentence the word is contained in, or the paragraph the word iscontained in. The user will also be presented with a list of searchengines they want to use to perform the search. The list of engines touse may come from a list the user configured ahead of time, a globallist, or a list based on the selected terms. The search may be based onthe context of the selected terms. For example, if the selected text orother data is a recognized medical term, then a list of medical relatedsites are displayed. If the search terms are the name of a car, thenvarious car related web sites may be searched.

The search may be performed based on what other users with a similarprofile to the current user may have used for similar terms in the past.For example, using the term “metal,” a search for users in themanufacturing industry may be performed in a metallurgical database,while other a search for other users may be performed in a musicdatabase. The determination of which search engines will be displayed orused may be driven by the term and a user. Often a user ID may also beutilized in determining how the search is to be performed. Oneembodiment of the present invention is capable of determining how thesearch is to be performed while other embodiments leave thedetermination to other applications on the user's computer or on aremote computer.

Once the search engine(s) are determined or selected, the search ispassed into the various search engines through their standard HTML orXTML form based method of searching. In addition, for search enginesthat may not be HTML or XTML based, other methods of triggering thesearch can be used. For example, searching for the term may occur in acompany's glossary that resides in some database.

The results of the search can be displayed in the user's web browser, inan embedded browser window in the triggering application, or in someother custom interface that is used for displaying that search engine'sresults.

The present invention will interface with existing applications oroperating systems via that application's API (application programminginterface) to provide the user activated search functionality. A new setof context menu items may be added to each application. The feweractions the user has to take to select the search term, and perform thesearch the better. This process depends on both the application and theapplication's application programming interfaces (APIs). One applicationmay involve simply hovering the mouse point over a term and pressing themiddle mouse button, other applications may involve highlighting thesearch terms and then right clicking to bring up a context menu suchthat the appropriate menu item may be selected.

Ideally, the present invention would be integrated with an operatingsystem to provide this capability to every application on the system(similar to how most applications support cut/copy/paste). But, thepresent invention may also be application specific.

Some of the applications that obviously fit this functionality are webbrowsers, e-mail clients, word processors, spreadsheets, PDF viewers andthe like, chat clients, voice recognition systems, operating systems andthe like. Note that an operating system is also considered to be anapplication.

Searching the worldwide web need not be limited to HTML linkspre-defined and embedded in web pages. Instead, any text can beimmediately linked to a search engine or engines and, effectively,become a hypertext link through the present invention. The searchabletext not only includes plain text in web pages but also encompasses textin any word processing program, spreadsheet, office suite or any othertype of text.

The text to be searched can either be selected with a left double-clickin most applications, or by dragging an inserted cursor (in HTML), or byshift/arrows in some programs. Depending on the language, structure, andAPI of the document containing the desired text, the text could beselected for searching by just hovering over the desired search terms.

For example, once the text is selected, a single right click brings upeither a drop down menu listing search options or, depending upon theAPI for the underlying page, a detailed GUI. Either way, the optionsavailable for searching are configurable. For example, the defaultsearch could be on the word with a particular search engine over theentire web. Options could modify the default (e.g., search the entiresentence in context, search for graphic files, use a metasearch engine,search only news/information sites, search only an intra- or extranet)or allow complete customization on a per search basis.

The program is also intelligent in many ways. First, it can read theterms to be searched in the context of either the surrounding text or ofthe URL from whence it came. For example, if “cardinal” were selected asthe text to be searched, the intelligence would provide different searchresults if the text were on a sports page than it would if the text camefrom a bird-watching page. A second type of intelligence will belearning the user's search preferences (e.g., shopping v. information v.entertainment, etc.). This intelligence can be both programmed in at theinitial log-on and/or learned from repeated uses of the presentinvention.

A third type of intelligence would be a “look-ahead” feature. On a HTMLpage or in another application the program would identify non-hypertextterms likely to be searched (e.g., proper nouns or, depending on theusers learned or entered preferences, terms of art in a particular fieldor fields), search the terms, and cache the results. The results of thesearch could be set to appear, for example as a pop-up when the cursorhovered over the text.

Specialized uses include a lawyer working on a brief typing a case,selecting the text and immediately being transported to a legal searchengine such a Lexis or Westlaw. With the “look-ahead” featureoperational and enabled the search results would already be resident andthus the search would be instantaneous. A doctor reviewing a patientreport emailed by a colleague could instantly search medical journalsand/or drug manufacturers for the latest information on a condition,procedure, or medication. On an intranet, a manager doing personnelevaluations could access all information about a particular employeewithout leaving the word-processing screen. An author writing or editinga story or book could search specialized databases for backgroundinformation or details.

The present invention is not, as previously described, limited to text.The present invention can be used in conjunction with scanned data, textrecognition devices and files, image files, MPEG files, voice commandsand other user input and available data. The data may be selected,activated and searched. The user is relieved of leaving an applicationto externally and manually execute a search. The results of the searchcan be stored, incorporated into the specific application, viewed,pre-viewed or otherwise handled as specified by a user.

The present invention may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the invention is, therefore, indicatedby the appended claims rather than by the foregoing description. Allchanges which come within the meaning and range of equivalency of theclaims are to be embraced within their scope.

1. A method comprising: identifying, by a processing device, a term inan electronic document; generating, by the processing device, a searchquery based on the term; identifying, by the processing device,additional terms within the electronic document; determining, by theprocessing device, a context based on the additional terms in theelectronic document; determining, by the processing device, whether toinitiate a search to a first data source based on a result of thecontext determination; and in response to determining to not initiatethe search to the first data source based on the result of the contextdetermination, initiating, by the processing device and using the searchquery, a search to a second data source that is different than the firstdata source.